// 对于axios函数库进行二次封装
import axios from "axios";
// 引入用户相关的仓库
import useUserStore from '@/store/modules/user';
import { ElMessage } from 'element-plus';
const requst = axios.create({
  baseURL: '/api', //请求路径api
  // timeout: 5000 //超时的时间设置,超出5秒请求就是失败
})

// 请求拦截器
requst.interceptors.request.use((config) => {
  // 获取用户仓库
  let userStore = useUserStore();  
  if(userStore.userInfo.token){
    config.headers.token = userStore.userInfo.token;    
  }
  // config:请求拦截器
  return config;
})

// 响应拦截器
requst.interceptors.response.use(
  (response) => {
    return response.data;
  },
  (error) => {
    // 处理http网络错误
    let status = error.response.status;
    switch (status) {
      case 404:
        ElMessage({
          type:'error',
          message:error.messaae
        })
        break;
      case 500 | 501 | 502 | 503 | 504 | 505:
        ElMessage({
          type:'error',
          message:'服务器无响应'
        })
        break;
      case 401:
        ElMessage({
          type:'error',
          message:'参数有误'
        })
    }
    return Promise.reject(new Error(error.messaae))
  }
)

export default requst;